home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / nrpas13.arc / SORT.PAS < prev    next >
Pascal/Delphi Source File  |  1991-05-01  |  924b  |  41 lines

  1. PROCEDURE sort(n: integer; VAR ra: glsarray);
  2. (* Program using routine SORT must define the type
  3. TYPE
  4.    glsarray = ARRAY [1..np] OF real;
  5. in the main routine, with np >= n.   *)
  6. LABEL 99;
  7. VAR
  8.    l,j,ir,i: integer;
  9.    rra: real;
  10. BEGIN
  11.    l := (n DIV 2)+1;
  12.    ir := n;
  13.    WHILE true DO BEGIN
  14.       IF (l > 1) THEN BEGIN
  15.          l := l-1;
  16.          rra := ra[l]
  17.       END ELSE BEGIN
  18.          rra := ra[ir];
  19.          ra[ir] := ra[1];
  20.          ir := ir-1;
  21.          IF (ir = 1) THEN BEGIN
  22.             ra[1] := rra;
  23.             GOTO 99
  24.          END
  25.       END;
  26.       i := l;
  27.       j := l+l;
  28.       WHILE (j <= ir) DO BEGIN
  29.          IF (j < ir) THEN
  30.             IF (ra[j] < ra[j+1]) THEN j := j+1;
  31.          IF (rra < ra[j]) THEN BEGIN
  32.             ra[i] := ra[j];
  33.             i := j;
  34.             j := j+j
  35.          END ELSE
  36.             j := ir+1
  37.       END;
  38.       ra[i] := rra
  39.    END;
  40. 99:   END;
  41.